package com.jpress.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;

@Entity
@Table(name="enqueteOpcao")
public class EnqueteOpcao implements Serializable {

	private static final long serialVersionUID = 5488799272338600686L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="codigo")
	private int codigo;
	
	@Column(name="voto", nullable=false)
	private int voto;
	
	@Column(name="textoOpcao", nullable=false, length=100)
	private String textoOpcao;
	
	@ManyToOne
	private Enquete enquete; 	
	
	public EnqueteOpcao(){}
	
	public int getCodigo() {
		return codigo;
	}

	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

	public int getVoto() {
		return voto;
	}

	public void setVoto(int voto) {
		this.voto = voto;
	}

	public Enquete getEnquete() {
		return enquete;
	}

	public void setEnquete(Enquete enquete) {
		this.enquete = enquete;
	}
	
	public void votarOpcao(){
		this.voto++;
	}
	
	public double getPorcentagemVotos(){
		return ((double) voto / enquete.getQuantidadeVotos()) * 100;
	}

	@Override
	public boolean equals(Object object){
		return EqualsBuilder.reflectionEquals(this, object);
	}

	@Override
	public int hashCode() {
		return HashCodeBuilder.reflectionHashCode(this);
	}	
}
